For communication links between integrated circuits, or between circuits within an integrated circuit, it is generally desirable to limit the number of wires in order to reduce chip area. One solution for reducing the number of wires is to create a plurality of virtual channels that share a single physical channel. This is for example achieved by time multiplexing a plurality of data streams.
In the case of synchronous communications links, a clock signal is used at the receiver in order to correctly receive the transmitted data streams. This clock signal is generally transmitted over the communication link alongside the data. Such a solution is relatively robust against propagation delay variations over the communications link, as the propagation delays of the data streams and of the clock signal will remain substantially equal.
In such synchronous communications links, it has been proposed to implement flow control using a system of credits. A buffer, such as a FIFO (first-in-first-out) buffer is present on the transmission side to store data waiting to be sent over the communications link, and a further buffer, which is also for example a FIFO, is present on the reception side to store the data received over the communications link. If the data transmission rate over the communications link is too high, the FIFO on the reception side may become full, leading an interruption of the data transmission over the communications link. This issue is overcome by credit-based flow control, according to which the transmission circuit may only transmit a data value over the communications link in response to a credit received from the reception circuit. The reception circuit issues a credit each time a data value is read from its FIFO.
While existing solutions for credit-based flow control are relatively effective in preventing overflow in the FIFO of the reception circuit, they tend to require relatively large FIFOs, and bulky circuits for handling credits. There is thus a need in the art for a credit-based flow control solution addressing these issues.